<TagAttribute("effect","effe","????","????",4,64)>
Public Class EFFECT_TAG
Inherits HaloTag
Public Const Extension as String = "effect"
Public Const FourCC as String = "effe"
Public Const ParentFourCC as String = "????"
Public Const GrandParentFourCC as String = "????"
Public Const [Version] as Short = 4
Public Const HeaderLength as Integer = 64

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' 
''' </summary>
<TagField("loop start event", 1, 23)>
Public loop_start_event as Short

''' <summary>
''' 
''' </summary>
<TagField("loop stop event", 1, 23)>
Public loop_stop_event as Short

''' <summary>
''' 
''' </summary>
<TagField("", 32, -1)>
Public padding as Byte()

''' <summary>
''' effect_locations_block
''' </summary>
<TagField("locations", 32, 11)>
Public locations as List(Of LOCATIONS_BLOCK)

''' <summary>
''' effect_event_block
''' </summary>
<TagField("events", 68, 11)>
Public events as List(Of EVENTS_BLOCK)
Public Class LOCATIONS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("marker name^", 32, 8)>
Public marker_name as String

End Class
Public Class EVENTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding as Byte()

''' <summary>
''' chance that this event will be skipped entirely
''' </summary>
<TagField("skip fraction", 1, 0)>
Public skip_fraction as Single

''' <summary>
''' delay before this event takes place
''' </summary>
<TagField("delay bounds:seconds", 2, 1)>
Public delay_bounds as Single()

''' <summary>
''' duration of this event
''' </summary>
<TagField("duration bounds:seconds", 2, 1)>
Public duration_bounds as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 20, -1)>
Public padding_1 as Byte()

''' <summary>
''' effect_part_block
''' </summary>
<TagField("parts", 104, 11)>
Public parts as List(Of PARTS_BLOCK)

''' <summary>
''' effect_particles_block
''' </summary>
<TagField("particles", 232, 11)>
Public particles as List(Of PARTICLES_BLOCK)
Public Class PARTS_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("create in", 1, 17)>
Public create_in as Short

''' <summary>
''' 
''' </summary>
<TagField("create in", 1, 17)>
Public create_in_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("location", 1, 23)>
Public location as Short

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 19)>
Public flags as Short

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("type^", 16, 10)>
Public type as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("", 24, -1)>
Public padding_1 as Byte()

''' <summary>
''' initial velocity along the location's forward
''' </summary>
<TagField("velocity bounds:world units per second", 2, 1)>
Public velocity_bounds as Single()

''' <summary>
''' initial velocity will be inside the cone defined by this angle.
''' </summary>
<TagField("velocity cone angle:degrees", 1, 0)>
Public velocity_cone_angle as Single

''' <summary>
''' 
''' </summary>
<TagField("angular velocity bounds:degrees per second", 2, 1)>
Public angular_velocity_bounds as Single()

''' <summary>
''' 
''' </summary>
<TagField("radius modifier bounds", 2, 1)>
Public radius_modifier_bounds as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 4, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
#Region "SCALE MODIFIERS"

''' <summary>
''' 
''' </summary>
<TagField("A scales values:", 1, 20)>
Public A_scales_values as Integer

''' <summary>
''' 
''' </summary>
<TagField("B scales values:", 1, 20)>
Public B_scales_values as Integer
#End Region

End Class
Public Class PARTICLES_BLOCK

''' <summary>
''' 
''' </summary>
<TagField("create in", 1, 17)>
Public create_in as Short

''' <summary>
''' 
''' </summary>
<TagField("create in", 1, 17)>
Public create_in_1 as Short

''' <summary>
''' 
''' </summary>
<TagField("create", 1, 17)>
Public create as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding as Byte()

''' <summary>
''' 
''' </summary>
<TagField("location", 1, 23)>
Public location as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_1 as Byte()

''' <summary>
''' particle initial velocity direction relative to the location's forward
''' </summary>
<TagField("relative direction", 2, 1)>
Public relative_direction as Single()

''' <summary>
''' particle initial position offset relative to the locatin's forward
''' </summary>
<TagField("relative offset", 3, 2)>
Public relative_offset as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_2 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("", 40, -1)>
Public padding_3 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("particle type^", 16, 10)>
Public particle_type as New TAG_REFERENCE

''' <summary>
''' 
''' </summary>
<TagField("flags", 1, 20)>
Public flags as Integer

''' <summary>
''' describes how the part creations are distributed over the event duration
''' </summary>
<TagField("distribution function", 1, 17)>
Public distribution_function as Short

''' <summary>
''' 
''' </summary>
<TagField("", 2, -1)>
Public padding_4 as Byte()

''' <summary>
''' number of particles created
''' </summary>
<TagField("count", 2, 24)>
Public count as Short()

''' <summary>
''' initial distance from the location's origin
''' </summary>
<TagField("distribution radius:world units", 2, 1)>
Public distribution_radius as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 12, -1)>
Public padding_5 as Byte()

''' <summary>
''' initial velocity along the specified direction
''' </summary>
<TagField("velocity:world units per second", 2, 1)>
Public velocity as Single()

''' <summary>
''' particle initial velocities will be inside the cone defined by this angle and the specified direction
''' </summary>
<TagField("velocity cone angle:degrees", 1, 0)>
Public velocity_cone_angle as Single

''' <summary>
''' 
''' </summary>
<TagField("angular velocity:degrees per second", 2, 1)>
Public angular_velocity as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_6 as Byte()

''' <summary>
''' particle radius
''' </summary>
<TagField("radius:world units", 2, 1)>
Public radius as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 8, -1)>
Public padding_7 as Byte()

''' <summary>
''' 
''' </summary>
<TagField("tint lower bound", 4, 3)>
Public tint_lower_bound as Single()

''' <summary>
''' 
''' </summary>
<TagField("tint upper bound", 4, 3)>
Public tint_upper_bound as Single()

''' <summary>
''' 
''' </summary>
<TagField("", 16, -1)>
Public padding_8 as Byte()

''' <summary>
''' 
''' </summary>
#Region "SCALE MODIFIERS"

''' <summary>
''' 
''' </summary>
<TagField("A scales values:", 1, 20)>
Public A_scales_values as Integer

''' <summary>
''' 
''' </summary>
<TagField("B scales values:", 1, 20)>
Public B_scales_values as Integer
#End Region

End Class

End Class

End Class
